﻿// 5365. 制作地图.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


/*
https://www.acwing.com/problem/content/5368/

贝茜正在学习制作扫雷地图。

作为初学者，它打算先从简单的一维地图做起，它准备制作一张 1×n
 大小的地图（即 1×n
 的方格矩阵）。

地图中含有地雷的方格，应标记为 *；不含地雷的方格，应标记为一个 0
 到 2
 之间的数字，用来表示其相邻方格中的地雷数量。

例如，001*2* 是一个合法的地图，因为每个数字的相邻 * 的数量与数字本身均保持一致；2* 是一个不合法的地图，因为数字 2 的相邻 * 的数量只有 1
。

给定贝茜正在制作的地图，地图中的若干（0
 个或更多）方格已被标记，其余（0
 个或更多）方格尚未标记。

请你计算，如果将所有尚未标记的方格全部标记完毕，一共可能得到多少种不同的合法地图。

注意，已被贝茜标记的部分不一定保证合法，所以很有可能根本得不到任何合法地图。

输入格式
共一行，包含一个长度为 n
 的字符串，其中第 i
 个字符用来表示第 i
 个方格的状态。

字符串中只可能包含字符 *、0、1、2、?，其中 *、0、1、2 的含义如题面描述，? 表示方格尚未标记。

输出格式
一个整数，表示可以得到的不同的合法地图的数量。

由于结果可能很大，请你输出对 109+7
 取模后的结果。

数据范围
前 4
 个测试点满足 1≤n≤10
。
所有测试点满足 1≤n≤106
。

输入样例1：
?01???
输出样例1：
4
输入样例2：
?
输出样例2：
2
输入样例3：
**12
输出样例3：
0
输入样例4：
1
输出样例4：
0
*/
int main()
{
    std::cout << "Hello World!\n";
}
 